package com.cskaoyan.javase.oop2._1extends._7initialization._0introduction;
/**
 * 何为子类对象初始化问题?
 * 我们先复习一下我们认识引用数据类型的过程：
 *
 * 1.首先我们从数组对象的初始化开始，我们知道引用数据类型变量分为两个部分:
 *      在堆上创建对象，在栈中创建引用
 *      引用通过存储地址指向堆上的对象。
 *      对象是引用数据类型的实质，但是我们不能直接访问对象，而是通过栈上的引用间接访问堆上的对象。
 *
 *  2.然后我们学习了对象与类的概念，引入了类加载的概念。并且使用数据类型的定义统一了引用数据类型和基本数据类型：
 *      数据类型：一组数据 + 基于数据的一组合法操作
 *      引用数据类型(类)：成员变量的合集 + 成员方法的合集
 *          其实就是数据 + 操作
 *  也就是说，引用数据类型（类）是特殊的数据类型，是自定义的数据类型。
 *  这种自定义的数据类型JVM不认识它，需要一个了解认识它的过程，称之为类加载。
 *          类加载大体上分为三大步: 加载 --> 连接 --> 初始化
 *          连接过程中,给静态成员变量默认初始化,具有默认值
 *          初始化过程给静态成员变量显式赋值,执行静态代码块
 *
 *  JVM通过类加载了解一个类型，从而能够完成创建对象，或者其它的一些操作。
 *          类加载的时机/类初始化的时机:
 *              1.启动main方法
 *              2.new对象
 *              3.访问静态成员
 *  3.现在我们学习了继承的概念，在继承中，子类会继承父类的成员，使用子类对象可以直接访问父类中继承过来的成员。那么问题就来了：
 *          父类的成员从何而来？凭空出现？
 *          父类的成员变量也需要赋值，那么赋值顺序是怎么样的？
 *              结果是怎么样的？为什么会体现出这种特点？
 *          等等
 *          在创建对象过程中,父子类成员创建的问题,统称子类对象的初始化问题
 *          即研究子类对象创建时，父类的成员从何而来，父类成员变量的赋值等相关的
 *
 * @since 15:54
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
}
